#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>
#include<stdlib.h>
//void rotate(int* nums, int numsSize, int k) {
//    k %= numsSize;
//    int arr[7], i = 0, j = 0, m = 0;
//    i = numsSize - k;
//    for (j; j < numsSize; j++)
//    {
//        if (i >= numsSize)
//        {
//            arr[j] = nums[m++];
//        }
//        else
//        {
//            arr[j] = nums[i++];
//        }
//    }
//    for (i = 0; i < numsSize; i++)
//    {
//        nums[i] = arr[i];
//    }
//}

//struct ListNode {
//    int val;
//    struct ListNode* next;
//};
//struct ListNode* getIntersectionNode(struct ListNode* headA, struct ListNode* headB) {
//    int i = 0, f = 0;
//    struct ListNode* p1 = headA;
//    struct ListNode* p2 = headB;
//    while (p1)
//    {
//        i++;
//        p1 = p1->next;
//    }
//    while (p2)
//    {
//        f++;
//        p2 = p2->next;
//    }
//    struct ListNode* p3 = headA;
//    struct ListNode* p4 = headB;
//    if (i > f)
//    {
//        i = i - f;
//        for (i; i > 0; i--)
//        {
//            p3 = p3->next;
//        }
//    }
//    else
//    {
//        i = f - i;
//        for (i; i > 0; i--)
//        {
//            p4 = p4->next;
//        }
//    }
//    while (p3 && p4)
//    {
//        if (p3 == p4)
//        {
//            return p3->val;
//        }
//        p3 = p3->next;
//        p4 = p4->next;
//    }
//    return 0;
//}

struct Node {
    int val;
    struct Node *next;
    struct Node *random;
 };
 

struct Node* copyRandomList(struct Node* head) {
    struct Node* headx = head;
    struct Node* heada = head;
    struct Node* l1 = (struct Node*)malloc(sizeof(struct Node));
    struct Node* l2 = l1;
    struct Node* l3 = l1;
    while (headx)
    {
        l1->next = (struct Node*)malloc(sizeof(struct Node));
        l1->val = headx->val;
        headx = headx->next;
        if (headx = NULL)
        {
            l1->next = NULL;
        }
        l1 = l1->next;
    }

    while (l2)
    {
        l1 = l2;
        headx = heada;
        while (headx)
        {
            if (heada->random = headx)
            {
                l2->random = l1;
                break;
            }
            l1 = l1->next;
            headx = headx->next;
        }
        l2 = l2->next;
        heada = heada->next;
    }
    return l3;
}
int main()
{
    copyRandomList(NULL, NULL);
	return 0;
}